﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Services;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace WebApplication1.Autenticado.Paciente
{
    public partial class Default : System.Web.UI.Page
    {
        protected void btnAdd_Click(object sender, EventArgs e)
        {
            System.Text.StringBuilder sb = new System.Text.StringBuilder();
            sb.Append(@"<script type='text/javascript'>");
            sb.Append("$('#addModal').modal('show');");
            sb.Append(@"</script>");
            ScriptManager.RegisterStartupScript(this, this.GetType(), "AddShowModalScript", sb.ToString(), false);
        }

        private void MostrarMensaje()
        {
            System.Text.StringBuilder sb = new System.Text.StringBuilder();
            sb.Append(@"<script type='text/javascript'>");
            sb.Append("$('#mensajeModal').modal('show');");
            sb.Append(@"</script>");
            ScriptManager.RegisterStartupScript(this, this.GetType(), "delHideModalScript", sb.ToString(), false);
        }

        protected void BuscarButton_Click(object sender, EventArgs e)
        {
            MensajeLabel.Text = string.Empty;
            try
            {
                ActualizarGrilla();
            }
            catch (Exception ex)
            {
                MensajeLabel.Text = string.Format("No se pudo buscar el registro({0})", ex.Message);
            }
        }

        protected void BuscarTratamientosButton_Click(object sender, EventArgs e)
        {
            MensajeLabel.Text = string.Empty;
            try
            {
                ActualizarGrilla();
            }
            catch (Exception ex)
            {
                MensajeLabel.Text = string.Format("No se pudo buscar el registro({0})", ex.Message);
            }
        }

        protected void btnSaveChild_Click(object sender, EventArgs e)
        {
            MensajeLabel.Text = string.Empty;
            try
            {
                Entidades.Tratamiento t = new Entidades.Tratamiento();
                t.IdPaciente = Convert.ToUInt32(IdPacienteUpdateLabel.Text);
                t.Pieza = PiezaTextBoxUpdate.Value;
                t.Descripcion = DescrUpdateTextBox.Text;
                t.Fecha = DateTime.ParseExact(FechaChildTextBoxEdit.Value, "dd/MM/yyyy", System.Globalization.CultureInfo.CurrentCulture);
                DL.Tratamientos db = new DL.Tratamientos();
                db.Modificar(t);
                MensajeLabel.Text = "Se modificó con éxito el registro";
            }
            catch (Exception ex)
            {
                MensajeLabel.Text = string.Format("No se pudo modificar el registro({0})", ex.Message);
            }
            ActualizarGrilla();
            MostrarMensaje();
        }

        protected void PacientesGridView_RowCommand(object sender, GridViewCommandEventArgs e)
        {
            int index = 0;
            if (!e.CommandArgument.Equals(string.Empty))
            {
                try
                {
                    index = Convert.ToInt32(e.CommandArgument);
                }
                catch { }
            }
        }

        protected void TratamientosGridView_RowCommand(object sender, GridViewCommandEventArgs e)
        {
            int index = 0;
            if (!e.CommandArgument.Equals(string.Empty))
            {
                index = Convert.ToInt32(e.CommandArgument);
            }

            if (e.CommandName.Equals("editChildRecord"))
            {
                GridView tratamientosClienteGridView = (GridView)sender;
                string code = tratamientosClienteGridView.DataKeys[index].Value.ToString();
                string fecha = tratamientosClienteGridView.Rows[index].Cells[1].Text;

                IdPacienteUpdateLabel.Text = code;
                FechaChildTextBoxEdit.Value = fecha;
                PiezaTextBoxUpdate.Value = Convert.ToUInt32(tratamientosClienteGridView.Rows[index].Cells[2].Text).ToString("00");
                DescrUpdateTextBox.Text = ((TextBox)tratamientosClienteGridView.Rows[index].Cells[3].FindControl("descrTratamientoTextBox")).Text;

                GenerarLinksAImagenes(code, fecha);

                System.Text.StringBuilder sb = new System.Text.StringBuilder();
                sb.Append(@"<script type='text/javascript'>");
                sb.Append("$('#editChildModal').modal('show');");
                sb.Append(@"</script>");
                ScriptManager.RegisterStartupScript(this, this.GetType(), "EditModalScript", sb.ToString(), false);
            }
        }

        private void GenerarLinksAImagenes(string code, string fecha)
        {
            DateTime f = DateTime.ParseExact(fecha, "dd/MM/yyyy", System.Globalization.CultureInfo.InvariantCulture);
            string path = Server.MapPath("~\\Imagenes\\") + code + "\\" + f.ToString("yyyyMMdd");
            try
            {
                string[] archivos = System.IO.Directory.GetFiles(path);

                System.IO.DirectoryInfo directory = new System.IO.DirectoryInfo(path);
                ImagenesLiteral.Text = "<ul id=\"ImagenesSubidas\">";
                foreach (System.IO.FileInfo objFile in directory.GetFiles("*.*"))
                {
                    ImagenesLiteral.Text += string.Format("<li><a href=\"../../Imagenes/{1}\">{0}</a></li>", objFile.Name, code + "/" + f.ToString("yyyyMMdd") + "/" + objFile.Name);
                }
                ImagenesLiteral.Text += "</ul>";
            }
            catch (System.IO.DirectoryNotFoundException)
            {
            }
        }

        [WebMethod]
        public static string ActualizarArchivos(string code, string fecha)
        {
            DateTime f = DateTime.ParseExact(fecha, "dd/MM/yyyy", System.Globalization.CultureInfo.InvariantCulture);
            string path = System.Web.HttpContext.Current.Server.MapPath("~\\Imagenes\\") + code + "\\" + f.ToString("yyyyMMdd");
            try
            {
                string[] archivos = System.IO.Directory.GetFiles(path);

                System.IO.DirectoryInfo directory = new System.IO.DirectoryInfo(path);
                string aux = "<ul id=\"ImagenesSubidas\">";
                foreach (System.IO.FileInfo objFile in directory.GetFiles("*.*"))
                {
                    aux += string.Format("<li><a href=\"../../Imagenes/{1}\">{0}</a></li>", objFile.Name, code + "/" + f.ToString("yyyyMMdd") + "/" + objFile.Name);
                }
                aux += "</ul>";
                return aux;
            }
            catch (System.IO.DirectoryNotFoundException)
            {
            }
            return string.Empty;
        }

        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                ActualizarGrilla();
            }
        }

        private void ActualizarGrilla()
        {
            DL.Pacientes db = new DL.Pacientes();
            List<Entidades.Paciente> pacientes;

            Entidades.FaceBookUser fu = (Entidades.FaceBookUser)Session["Paciente"];

            pacientes = db.ListaFiltradaXEmail(fu.Email);
            PacientesGridView.VirtualItemCount = db.CantidadFiltradaXEmail(fu.Email);
            PacientesGridView.DataSource = pacientes;
            Session["Pacientes"] = pacientes;
            PacientesGridView.DataBind();
        }

        protected void PacientesGridView_OnRowDataBound(object sender, GridViewRowEventArgs e)
        {
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                string customerID = PacientesGridView.DataKeys[e.Row.RowIndex].Value.ToString();
                GridView tratamientosClienteGridView = (GridView)e.Row.FindControl("TratamientosGridView");

                DL.Tratamientos db = new DL.Tratamientos();
                Entidades.Paciente paciente = new Entidades.Paciente();
                paciente.Id = Convert.ToUInt32(customerID);
                List<Entidades.Tratamiento> tratamientos = db.ListaFiltradaXTratamientos(paciente, string.Empty);
                tratamientosClienteGridView.DataSource = tratamientos;
                tratamientosClienteGridView.DataBind();
            }
        }

        protected void PacientesGridView_PageIndexChanging(object sender, GridViewPageEventArgs e)
        {
            int i = e.NewPageIndex;
            PacientesGridView.PageIndex = i;
            ActualizarGrilla(i, PacientesGridView.PageSize);
        }

        private void ActualizarGrilla(int pageindex, int pageSize)
        {
            DL.Pacientes db = new DL.Pacientes();
            List<Entidades.Paciente> pacientes;
            Entidades.FaceBookUser fu = (Entidades.FaceBookUser)Session["Paciente"];
            pacientes = db.ListaFiltrada(fu.Name, pageindex, pageSize);
            PacientesGridView.VirtualItemCount = db.CantidadFiltrada(fu.Name);
            PacientesGridView.DataSource = pacientes;
            Session["Pacientes"] = pacientes;
            PacientesGridView.DataBind();
        }

        protected string EmptyText()
        {
            return string.Empty;
        }
    }
}